import os
from api_tests.base_api import BaseApi

class AppDownloadApi:
    def __init__(self):
        self.api = BaseApi()
    
    def download_app_code(self, app_id, save_path=None):
        """
        下载应用代码
        
        Args:
            app_id: 应用ID（路径参数）
            save_path: 保存路径（可选）
            
        Returns:
            str: 格式化的响应结果
        """
        # 构建URL（appId作为路径参数）
        url = f"{self.api.base_url}/app/download/{app_id}"
        
        # 发送请求（普通用户权限）
        response = self.api.get(
            url=url,
            auth_type="user"
        )
        
        # 检查响应
        if not response:
            return "请求失败：无响应"
        
        try:
            # 尝试解析为JSON（可能返回错误信息）
            result = response.json()
            return self.api.format_result(result)
        except:
            # 如果不是JSON，可能是文件下载
            if response.status_code == 200:
                # 生成默认保存路径
                if not save_path:
                    save_path = f"app_code_{app_id}.zip"
                
                # 保存文件
                try:
                    with open(save_path, 'wb') as f:
                        f.write(response.content)
                    return f"文件下载成功，保存至：{os.path.abspath(save_path)}"
                except Exception as e:
                    return f"文件保存失败：{str(e)}"
            else:
                return f"下载失败，状态码：{response.status_code}"

# 测试示例
if __name__ == "__main__":
    download_api = AppDownloadApi()
    result = download_api.download_app_code(
        app_id=1  # 替换为实际的应用ID
    )
    print(result)